വെബ് ആപ്ലിക്കേഷനുകൾക്കുള്ള ഫ്രണ്ടെൻഡ് ഷെയർ ടാർഗെറ്റ് പ്രോസസ്സർ നിർമ്മിക്കുന്നതിനായുള്ള സമഗ്ര ഗൈഡ്. ഡാറ്റാ മാനേജ്മെന്റ്, സുരക്ഷ, പങ്കിട്ട ഉള്ളടക്കം കൈകാര്യം ചെയ്യുന്നതിനുള്ള മികച്ച രീതികൾ എന്നിവ ഇതിൽ ഉൾക്കൊള്ളുന്നു.
ഫ്രണ്ടെൻഡ് വെബ് ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സർ: ഷെയർ ഡാറ്റാ മാനേജ്മെന്റിൽ വൈദഗ്ദ്ധ്യം നേടുന്നു
വെബ് ഷെയർ ടാർഗെറ്റ് API പ്രോഗ്രസ്സീവ് വെബ് ആപ്പുകൾക്കും (PWAs) വെബ് ആപ്ലിക്കേഷനുകൾക്കും ആവേശകരമായ സാധ്യതകൾ തുറന്നുതരുന്നു. മറ്റ് ആപ്പുകളിൽ നിന്നുള്ള ഉള്ളടക്കം നിങ്ങളുടെ ആപ്ലിക്കേഷനിലേക്ക് തടസ്സമില്ലാതെ പങ്കിടാൻ ഇത് ഉപയോക്താക്കളെ അനുവദിക്കുന്നു. ഈ കഴിവ് ഉപയോക്തൃ ഇടപെടൽ വർദ്ധിപ്പിക്കുകയും കൂടുതൽ സുഗമവും സംയോജിതവുമായ അനുഭവം നൽകുകയും ചെയ്യുന്നു. എന്നിരുന്നാലും, ഫ്രണ്ടെൻഡിൽ പങ്കിട്ട ഡാറ്റ ഫലപ്രദമായി കൈകാര്യം ചെയ്യുന്നതിന് ശ്രദ്ധാപൂർവ്വമുള്ള ആസൂത്രണം, ശക്തമായ പിശക് കൈകാര്യം ചെയ്യൽ, സുരക്ഷയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കൽ എന്നിവ ആവശ്യമാണ്. ശക്തവും സുരക്ഷിതവുമായ ഒരു ഫ്രണ്ടെൻഡ് ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സർ നിർമ്മിക്കുന്നതിനുള്ള പ്രക്രിയയിലൂടെ ഈ സമഗ്രമായ ഗൈഡ് നിങ്ങളെ കൊണ്ടുപോകും.
വെബ് ഷെയർ ടാർഗെറ്റ് API മനസ്സിലാക്കുന്നു
നടപ്പിലാക്കുന്നതിന് മുമ്പ്, വെബ് ഷെയർ ടാർഗെറ്റ് API-യെക്കുറിച്ച് സംക്ഷിപ്തമായി അവലോകനം ചെയ്യാം. ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ ഒരു ഷെയർ ടാർഗെറ്റായി സ്വയം രജിസ്റ്റർ ചെയ്യാൻ ഇത് നിങ്ങളുടെ വെബ് ആപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഒരു ഉപയോക്താവ് മറ്റൊരു ആപ്ലിക്കേഷനിൽ നിന്ന് ഉള്ളടക്കം (ഉദാഹരണത്തിന്, ടെക്സ്റ്റ്, URL-കൾ, ഫയലുകൾ) പങ്കിടാൻ ശ്രമിക്കുമ്പോൾ, നിങ്ങളുടെ PWA ഷെയർ ഷീറ്റിൽ ഒരു ഓപ്ഷനായി ദൃശ്യമാകും.
ഷെയർ ടാർഗെറ്റ് പ്രവർത്തനക്ഷമമാക്കാൻ, നിങ്ങളുടെ വെബ് ആപ്പ് മാനിഫെസ്റ്റിൽ (manifest.json) അത് നിർവചിക്കേണ്ടതുണ്ട്. ഇൻകമിംഗ് ഷെയർ അഭ്യർത്ഥനകൾ എങ്ങനെ കൈകാര്യം ചെയ്യണമെന്ന് ഈ മാനിഫെസ്റ്റ് ബ്രൗസറിനോട് പറയുന്നു. ഒരു അടിസ്ഥാന ഉദാഹരണം ഇതാ:
{
"name": "My Awesome App",
"short_name": "Awesome App",
"start_url": "/",
"display": "standalone",
"background_color": "#fff",
"theme_color": "#000",
"icons": [
{
"src": "icon.png",
"sizes": "512x512",
"type": "image/png"
}
],
"share_target": {
"action": "/share-target",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"title": "title",
"text": "text",
"url": "url",
"files": [
{
"name": "sharedFiles",
"accept": ["image/*", "video/*"]
}
]
}
}
}
പ്രധാന ഘടകങ്ങൾ നമുക്ക് വിശദീകരിക്കാം:
action: പങ്കിട്ട ഡാറ്റ കൈകാര്യം ചെയ്യുന്ന നിങ്ങളുടെ PWA-യിലെ URL. ഒരു ഉപയോക്താവ് നിങ്ങളുടെ ആപ്പിലേക്ക് ഉള്ളടക്കം പങ്കിടുമ്പോൾ ഈ URL ഉപയോഗിക്കപ്പെടും.method: ഡാറ്റ അയയ്ക്കാൻ ഉപയോഗിക്കുന്ന HTTP രീതി. സാധാരണയായി, ഷെയർ ടാർഗെറ്റുകൾക്കായി നിങ്ങൾPOSTഉപയോഗിക്കും.enctype: ഡാറ്റയുടെ എൻകോഡിംഗ് തരം. ഫയലുകൾ കൈകാര്യം ചെയ്യുന്നതിന്multipart/form-dataസാധാരണയായി അനുയോജ്യമാണ്, അതേസമയം ലളിതമായ ടെക്സ്റ്റ് അധിഷ്ഠിത ഡാറ്റയ്ക്കായിapplication/x-www-form-urlencodedഉപയോഗിക്കാം.params: പങ്കിട്ട ഡാറ്റ ഫോം ഫീൽഡുകളുമായി എങ്ങനെ മാപ്പ് ചെയ്യുന്നു എന്ന് നിർവചിക്കുന്നു. ഇത് പങ്കിടുന്ന ശീർഷകം, ടെക്സ്റ്റ്, URL, ഫയലുകൾ എന്നിവ എളുപ്പത്തിൽ ആക്സസ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു.
ഉപയോക്താവ് ഷെയർ ഷീറ്റിൽ നിന്ന് നിങ്ങളുടെ ആപ്പ് തിരഞ്ഞെടുത്തുകഴിഞ്ഞാൽ, ബ്രൗസർ action URL-ലേക്ക് പോയി, പങ്കിട്ട ഡാറ്റ ഒരു POST അഭ്യർത്ഥനയായി അയയ്ക്കും.
ഫ്രണ്ടെൻഡ് ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സർ നിർമ്മിക്കുന്നു
നിർവചിച്ച action URL-ൽ വരുന്ന ഡാറ്റ കൈകാര്യം ചെയ്യുന്ന JavaScript കോഡിലാണ് നിങ്ങളുടെ ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സറിൻ്റെ കാതൽ. ഇവിടെയാണ് നിങ്ങൾ പങ്കിട്ട ഉള്ളടക്കം വേർതിരിച്ചെടുക്കുകയും അത് സാധൂകരിക്കുകയും ഉചിതമായി പ്രോസസ്സ് ചെയ്യുകയും ചെയ്യുന്നത്.
1. സർവീസ് വർക്കർ തടസ്സപ്പെടുത്തൽ (Interception)
ഷെയർ ടാർഗെറ്റ് ഡാറ്റ കൈകാര്യം ചെയ്യാനുള്ള ഏറ്റവും വിശ്വസനീയമായ മാർഗ്ഗം ഒരു സർവീസ് വർക്കറിലൂടെയാണ്. സർവീസ് വർക്കറുകൾ നിങ്ങളുടെ പ്രധാന ആപ്ലിക്കേഷൻ ത്രെഡിൽ നിന്ന് സ്വതന്ത്രമായി പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കുന്നു, കൂടാതെ ഷെയർ ടാർഗെറ്റ് ട്രിഗർ ചെയ്യുന്ന POST അഭ്യർത്ഥന ഉൾപ്പെടെയുള്ള നെറ്റ്വർക്ക് അഭ്യർത്ഥനകളെ തടസ്സപ്പെടുത്താൻ കഴിയും. ഇത് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഫോർഗ്രൗണ്ടിൽ സജീവമായി പ്രവർത്തിക്കാത്തപ്പോഴും ഷെയർ അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
ഷെയർ ടാർഗെറ്റ് അഭ്യർത്ഥന തടസ്സപ്പെടുത്തുന്ന ഒരു സർവീസ് വർക്കറിൻ്റെ അടിസ്ഥാന ഉദാഹരണം ഇതാ:
// service-worker.js
self.addEventListener('fetch', event => {
if (event.request.method === 'POST' && event.request.url.includes('/share-target')) {
event.respondWith(handleShareTarget(event));
}
});
async function handleShareTarget(event) {
const formData = await event.request.formData();
// Extract data from the FormData object
const title = formData.get('title');
const text = formData.get('text');
const url = formData.get('url');
const files = formData.getAll('sharedFiles');
// Process the shared data
console.log('Title:', title);
console.log('Text:', text);
console.log('URL:', url);
console.log('Files:', files);
// Respond to the request (e.g., redirect to a confirmation page)
return Response.redirect('/confirmation');
}
ഈ സർവീസ് വർക്കറിലെ പ്രധാന കാര്യങ്ങൾ:
fetchഇവൻ്റ് ലിസണർ: ഇത് എല്ലാ നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾക്കും വേണ്ടി ശ്രദ്ധിക്കുന്നു.- അഭ്യർത്ഥന ഫിൽട്ടറിംഗ്: അഭ്യർത്ഥന ഒരു
POSTഅഭ്യർത്ഥനയാണോ എന്നും URL-ൽ/share-targetഉൾപ്പെടുന്നുണ്ടോ എന്നും ഇത് പരിശോധിക്കുന്നു. ഷെയർ ടാർഗെറ്റ് അഭ്യർത്ഥനകൾ മാത്രമേ തടസ്സപ്പെടുത്തുന്നുള്ളൂ എന്ന് ഇത് ഉറപ്പാക്കുന്നു. event.respondWith(): ഇത് സാധാരണഗതിയിൽ അഭ്യർത്ഥന കൈകാര്യം ചെയ്യുന്നതിൽ നിന്ന് ബ്രൗസറിനെ തടയുകയും ഒരു കസ്റ്റം പ്രതികരണം നൽകാൻ സർവീസ് വർക്കറിനെ അനുവദിക്കുകയും ചെയ്യുന്നു.handleShareTarget(): പങ്കിട്ട ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്ന ഒരു അസിൻക്രണസ് ഫംഗ്ഷൻ.event.request.formData(): ഇത് POST അഭ്യർത്ഥന ബോഡി ഒരുFormDataഒബ്ജക്റ്റായി പാഴ്സ് ചെയ്യുന്നു, പങ്കിട്ട ഡാറ്റ എളുപ്പത്തിൽ ആക്സസ് ചെയ്യാൻ ഇത് സഹായിക്കുന്നു.- ഡാറ്റാ വേർതിരിച്ചെടുക്കൽ:
formData.get(),formData.getAll()എന്നിവ ഉപയോഗിച്ച്FormDataഒബ്ജക്റ്റിൽ നിന്ന് ശീർഷകം, ടെക്സ്റ്റ്, URL, ഫയലുകൾ എന്നിവ കോഡ് വേർതിരിച്ചെടുക്കുന്നു. - ഡാറ്റാ പ്രോസസ്സിംഗ്: ഉദാഹരണ കോഡ് ഡാറ്റ കൺസോളിൽ ലോഗ് ചെയ്യുന്നു. ഒരു യഥാർത്ഥ ആപ്ലിക്കേഷനിൽ, നിങ്ങൾ ഡാറ്റ കൂടുതൽ പ്രോസസ്സ് ചെയ്യും (ഉദാഹരണത്തിന്, ഒരു ഡാറ്റാബേസിൽ സംരക്ഷിക്കുക, UI-ൽ പ്രദർശിപ്പിക്കുക).
- പ്രതികരണം: ഒരു സ്ഥിരീകരണ പേജിലേക്ക് ഉപയോക്താവിനെ റീഡയറക്ട് ചെയ്തുകൊണ്ട് അഭ്യർത്ഥനയോട് കോഡ് പ്രതികരിക്കുന്നു. ആവശ്യാനുസരണം നിങ്ങൾക്ക് പ്രതികരണം ഇഷ്ടാനുസൃതമാക്കാം.
പ്രധാനം: നിങ്ങളുടെ പ്രധാന JavaScript കോഡിൽ സർവീസ് വർക്കർ ശരിയായി രജിസ്റ്റർ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. ഒരു ലളിതമായ രജിസ്ട്രേഷൻ സ്നിപ്പറ്റ് ഇങ്ങനെയായിരിക്കും:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(registration => {
console.log('Service Worker registered with scope:', registration.scope);
})
.catch(error => {
console.error('Service Worker registration failed:', error);
});
}
2. ഡാറ്റാ വേർതിരിച്ചെടുക്കലും സാധൂകരണവും
ഷെയർ ടാർഗെറ്റ് അഭ്യർത്ഥന തടസ്സപ്പെടുത്തിയ ശേഷം, FormData ഒബ്ജക്റ്റിൽ നിന്ന് ഡാറ്റ വേർതിരിച്ചെടുക്കുകയും അത് സാധൂകരിക്കുകയും ചെയ്യുക എന്നതാണ് അടുത്ത ഘട്ടം. ഡാറ്റാ സമഗ്രത ഉറപ്പാക്കുന്നതിനും സുരക്ഷാ പ്രശ്നങ്ങൾ തടയുന്നതിനും ഇത് നിർണായകമാണ്.
പങ്കിട്ട ഡാറ്റ എങ്ങനെ വേർതിരിച്ചെടുക്കുകയും സാധൂകരിക്കുകയും ചെയ്യാം എന്നതിൻ്റെ ഒരു ഉദാഹരണം ഇതാ:
async function handleShareTarget(event) {
const formData = await event.request.formData();
const title = formData.get('title');
const text = formData.get('text');
const url = formData.get('url');
const files = formData.getAll('sharedFiles');
// Validate the data
if (!title) {
console.error('Title is missing.');
return new Response('Title is required.', { status: 400 });
}
if (files && files.length > 0) {
for (const file of files) {
if (file.size > 10 * 1024 * 1024) { // Limit file size to 10MB
console.error('File size exceeds limit.');
return new Response('File size exceeds limit (10MB).', { status: 400 });
}
if (!file.type.startsWith('image/') && !file.type.startsWith('video/')) {
console.error('Invalid file type.');
return new Response('Invalid file type. Only images and videos are allowed.', { status: 400 });
}
}
}
// Process the shared data (if validation passes)
console.log('Title:', title);
console.log('Text:', text);
console.log('URL:', url);
console.log('Files:', files);
// Respond to the request
return Response.redirect('/confirmation');
}
ഈ ഉദാഹരണം താഴെ പറയുന്ന സാധൂകരണ പരിശോധനകൾ കാണിക്കുന്നു:
- ആവശ്യമായ ഫീൽഡുകൾ: ശീർഷകം ഉണ്ടോ എന്ന് ഇത് പരിശോധിക്കുന്നു. ഇല്ലെങ്കിൽ, ഒരു പിശക് പ്രതികരണം നൽകുന്നു.
- ഫയൽ സൈസ് പരിധി: ഇത് പരമാവധി ഫയൽ വലുപ്പം 10MB ആയി പരിമിതപ്പെടുത്തുന്നു. ഇത് ഡെനിയൽ-ഓഫ്-സർവീസ് ആക്രമണങ്ങൾ തടയാൻ സഹായിക്കുകയും വലിയ ഫയലുകൾ കൊണ്ട് നിങ്ങളുടെ സെർവർ ഓവർലോഡ് ആകുന്നില്ലെന്ന് ഉറപ്പാക്കുകയും ചെയ്യുന്നു.
- ഫയൽ ടൈപ്പ് സാധൂകരണം: ഇത് ചിത്രങ്ങളും വീഡിയോ ഫയലുകളും മാത്രമേ അനുവദിക്കൂ. ഉപയോക്താക്കൾ ക്ഷുദ്രകരമായ ഫയലുകൾ അപ്ലോഡ് ചെയ്യുന്നത് തടയാൻ ഇത് സഹായിക്കുന്നു.
നിങ്ങളുടെ ആപ്ലിക്കേഷൻ്റെ പ്രത്യേക ആവശ്യകതകളെ അടിസ്ഥാനമാക്കി ഈ സാധൂകരണ പരിശോധനകൾ ഇഷ്ടാനുസൃതമാക്കാൻ ഓർമ്മിക്കുക. URL ഫോർമാറ്റ്, ടെക്സ്റ്റ് നീളം, മറ്റ് പ്രസക്തമായ പാരാമീറ്ററുകൾ എന്നിവയ്ക്കായി സാധൂകരണം ചേർക്കുന്നത് പരിഗണിക്കുക.
3. പങ്കിട്ട ഫയലുകൾ കൈകാര്യം ചെയ്യൽ
പങ്കിട്ട ഫയലുകൾ കൈകാര്യം ചെയ്യുമ്പോൾ, അവ കാര്യക്ഷമമായും സുരക്ഷിതമായും പ്രോസസ്സ് ചെയ്യേണ്ടത് പ്രധാനമാണ്. ചില മികച്ച രീതികൾ ഇതാ:
- ഫയൽ ഉള്ളടക്കങ്ങൾ വായിക്കുക: പങ്കിട്ട ഫയലുകളുടെ ഉള്ളടക്കങ്ങൾ വായിക്കാൻ
FileReaderAPI ഉപയോഗിക്കുക. - ഫയലുകൾ സുരക്ഷിതമായി സൂക്ഷിക്കുക: ശരിയായ ആക്സസ് നിയന്ത്രണങ്ങൾ ഉപയോഗിച്ച് നിങ്ങളുടെ സെർവറിലെ സുരക്ഷിതമായ ഒരു സ്ഥലത്ത് ഫയലുകൾ സംഭരിക്കുക. സ്കേലബിലിറ്റിക്കും സുരക്ഷയ്ക്കുമായി Amazon S3, Google Cloud Storage, അല്ലെങ്കിൽ Azure Blob Storage പോലുള്ള ഒരു ക്ലൗഡ് സ്റ്റോറേജ് സേവനം ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക.
- അതുല്യമായ ഫയൽ പേരുകൾ ഉണ്ടാക്കുക: പേരുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങളും സുരക്ഷാ പ്രശ്നങ്ങളും തടയാൻ അതുല്യമായ ഫയൽ പേരുകൾ ഉണ്ടാക്കുക. അതുല്യമായ ഫയൽ പേരുകൾ സൃഷ്ടിക്കാൻ ടൈംസ്റ്റാമ്പുകൾ, റാൻഡം നമ്പറുകൾ, ഉപയോക്തൃ ഐഡികൾ എന്നിവയുടെ ഒരു സംയോജനം നിങ്ങൾക്ക് ഉപയോഗിക്കാം.
- ഫയൽ പേരുകൾ വൃത്തിയാക്കുക: ക്ഷുദ്രകരമായ അക്ഷരങ്ങൾ നീക്കം ചെയ്യാൻ ഫയൽ പേരുകൾ വൃത്തിയാക്കുക. ഇത് ക്രോസ്-സൈറ്റ് സ്ക്രിപ്റ്റിംഗ് (XSS) പ്രശ്നങ്ങൾ തടയാൻ സഹായിക്കുന്നു.
- കണ്ടൻ്റ് സെക്യൂരിറ്റി പോളിസി (CSP): നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ നിന്ന് ലോഡ് ചെയ്യാൻ കഴിയുന്ന റിസോഴ്സുകളുടെ തരങ്ങൾ നിയന്ത്രിക്കാൻ നിങ്ങളുടെ കണ്ടൻ്റ് സെക്യൂരിറ്റി പോളിസി (CSP) കോൺഫിഗർ ചെയ്യുക. ആക്രമണകാരികൾക്ക് നിങ്ങളുടെ ആപ്ലിക്കേഷനിലേക്ക് ക്ഷുദ്രകരമായ കോഡ് കുത്തിവയ്ക്കുന്നത് തടഞ്ഞുകൊണ്ട് XSS ആക്രമണങ്ങൾ തടയാൻ ഇത് സഹായിക്കുന്നു.
FileReader API ഉപയോഗിച്ച് പങ്കിട്ട ഫയലിൻ്റെ ഉള്ളടക്കങ്ങൾ എങ്ങനെ വായിക്കാം എന്നതിൻ്റെ ഒരു ഉദാഹരണം ഇതാ:
async function processFiles(files) {
for (const file of files) {
const reader = new FileReader();
reader.onload = (event) => {
const fileData = event.target.result;
console.log('File data:', fileData);
// Now you can upload or store the fileData securely
};
reader.onerror = (error) => {
console.error('Error reading file:', error);
};
reader.readAsDataURL(file); // Or readAsArrayBuffer for binary data
}
}
ഈ കോഡ് പങ്കിട്ട ഫയലുകളിലൂടെ ആവർത്തിക്കുകയും ഓരോ ഫയലിൻ്റെയും ഡാറ്റ വായിക്കാൻ ഒരു FileReader ഉപയോഗിക്കുകയും ചെയ്യുന്നു. ഫയൽ വിജയകരമായി വായിച്ചുകഴിഞ്ഞാൽ onload ഇവൻ്റ് ഹാൻഡ്ലർ വിളിക്കപ്പെടുന്നു, കൂടാതെ fileData വേരിയബിളിൽ ഫയലിൻ്റെ ഉള്ളടക്കങ്ങൾ ഒരു ഡാറ്റാ URL ആയി (അല്ലെങ്കിൽ നിങ്ങൾ readAsArrayBuffer ഉപയോഗിക്കുകയാണെങ്കിൽ ഒരു ArrayBuffer ആയി) അടങ്ങിയിരിക്കുന്നു. തുടർന്ന് നിങ്ങൾക്ക് ഈ ഡാറ്റ നിങ്ങളുടെ സെർവറിലേക്ക് അപ്ലോഡ് ചെയ്യാനോ ഒരു ലോക്കൽ ഡാറ്റാബേസിൽ സംഭരിക്കാനോ കഴിയും.
4. വ്യത്യസ്ത ഡാറ്റാ തരങ്ങൾ കൈകാര്യം ചെയ്യൽ
ടെക്സ്റ്റ്, URL-കൾ, ഫയലുകൾ എന്നിവയുൾപ്പെടെ വിവിധ ഡാറ്റാ തരങ്ങൾ വെബ് ഷെയർ ടാർഗെറ്റ് API-ക്ക് കൈകാര്യം ചെയ്യാൻ കഴിയും. നിങ്ങളുടെ ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സർ ഈ ഓരോ ഡാറ്റാ തരങ്ങളെയും ഉചിതമായി കൈകാര്യം ചെയ്യാൻ കഴിയുന്നതായിരിക്കണം.
- ടെക്സ്റ്റ്: ടെക്സ്റ്റ് ഡാറ്റയ്ക്കായി, നിങ്ങൾക്ക്
FormDataഒബ്ജക്റ്റിൽ നിന്ന് ടെക്സ്റ്റ് വേർതിരിച്ചെടുത്ത് ആവശ്യാനുസരണം പ്രോസസ്സ് ചെയ്യാവുന്നതാണ്. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ടെക്സ്റ്റ് ഒരു ഡാറ്റാബേസിൽ സംരക്ഷിക്കാം, UI-ൽ പ്രദർശിപ്പിക്കാം, അല്ലെങ്കിൽ ഒരു തിരയൽ നടത്താൻ ഉപയോഗിക്കാം. - URL-കൾ: URL-കൾക്കായി, നിങ്ങൾ URL ഫോർമാറ്റ് സാധൂകരിക്കുകയും അത് നാവിഗേറ്റ് ചെയ്യാൻ സുരക്ഷിതമാണെന്ന് ഉറപ്പാക്കുകയും വേണം. URL സാധൂകരിക്കാൻ നിങ്ങൾക്ക് ഒരു റെഗുലർ എക്സ്പ്രഷനോ URL പാഴ്സിംഗ് ലൈബ്രറിയോ ഉപയോഗിക്കാം.
- ഫയലുകൾ: മുമ്പ് വിശദീകരിച്ചതുപോലെ, സുരക്ഷ ഉറപ്പാക്കുന്നതിനും ഡാറ്റാ നഷ്ടം തടയുന്നതിനും ഫയലുകൾക്ക് ശ്രദ്ധാപൂർവ്വമുള്ള കൈകാര്യം ചെയ്യൽ ആവശ്യമാണ്. ഫയൽ തരങ്ങളും വലുപ്പങ്ങളും സാധൂകരിക്കുകയും അപ്ലോഡ് ചെയ്ത ഫയലുകൾ സുരക്ഷിതമായി സംഭരിക്കുകയും ചെയ്യുക.
5. ഉപയോക്താവിന് ഫീഡ്ബാക്ക് പ്രദർശിപ്പിക്കുന്നു
ഷെയർ ഓപ്പറേഷൻ്റെ നിലയെക്കുറിച്ച് ഉപയോക്താവിന് ഫീഡ്ബാക്ക് നൽകേണ്ടത് നിർണായകമാണ്. ഒരു വിജയ സന്ദേശം, ഒരു പിശക് സന്ദേശം, അല്ലെങ്കിൽ ഒരു ലോഡിംഗ് ഇൻഡിക്കേറ്റർ എന്നിവ പ്രദർശിപ്പിച്ചുകൊണ്ട് ഇത് ചെയ്യാൻ കഴിയും.
- വിജയ സന്ദേശം: ഷെയർ ഓപ്പറേഷൻ വിജയകരമായി പൂർത്തിയാകുമ്പോൾ ഒരു വിജയ സന്ദേശം പ്രദർശിപ്പിക്കുക. ഉദാഹരണത്തിന്, "ഉള്ളടക്കം വിജയകരമായി പങ്കിട്ടു!" എന്ന് പറയുന്ന ഒരു സന്ദേശം നിങ്ങൾക്ക് പ്രദർശിപ്പിക്കാം.
- പിശക് സന്ദേശം: ഷെയർ ഓപ്പറേഷൻ പരാജയപ്പെട്ടാൽ ഒരു പിശക് സന്ദേശം പ്രദർശിപ്പിക്കുക. എന്താണ് തെറ്റ് സംഭവിച്ചതെന്നും അത് എങ്ങനെ പരിഹരിക്കാമെന്നും ഉപയോക്താവിനെ മനസ്സിലാക്കാൻ സഹായിക്കുന്ന വ്യക്തവും വിവരദായകവുമായ പിശക് സന്ദേശങ്ങൾ നൽകുക. ഉദാഹരണത്തിന്, "ഉള്ളടക്കം പങ്കിടാൻ കഴിഞ്ഞില്ല. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക." എന്ന് പറയുന്ന ഒരു സന്ദേശം നിങ്ങൾക്ക് പ്രദർശിപ്പിക്കാം. ലഭ്യമാണെങ്കിൽ പ്രത്യേക വിവരങ്ങൾ ഉൾപ്പെടുത്തുക (ഉദാഹരണത്തിന്, "ഫയൽ വലുപ്പം പരിധി കവിഞ്ഞു.").
- ലോഡിംഗ് ഇൻഡിക്കേറ്റർ: ഷെയർ ഓപ്പറേഷൻ പുരോഗമിക്കുമ്പോൾ ഒരു ലോഡിംഗ് ഇൻഡിക്കേറ്റർ പ്രദർശിപ്പിക്കുക. ഇത് ആപ്ലിക്കേഷൻ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉപയോക്താവിനെ അറിയിക്കുകയും ഓപ്പറേഷൻ പൂർത്തിയാകുന്നത് വരെ കൂടുതൽ നടപടികൾ എടുക്കുന്നതിൽ നിന്ന് അവരെ തടയുകയും ചെയ്യുന്നു.
ഈ സന്ദേശങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന് UI ചലനാത്മകമായി അപ്ഡേറ്റ് ചെയ്യാൻ നിങ്ങൾക്ക് JavaScript ഉപയോഗിക്കാം. ഉപയോക്താവിന് അസ്വസ്ഥതയുണ്ടാക്കാത്ത സന്ദേശങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന് ഒരു നോട്ടിഫിക്കേഷൻ ലൈബ്രറിയോ ടോസ്റ്റ് ഘടകമോ ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക.
6. സുരക്ഷാ പരിഗണനകൾ
ഒരു ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സർ നിർമ്മിക്കുമ്പോൾ സുരക്ഷയ്ക്ക് മുൻഗണന നൽകണം. ചില പ്രധാന സുരക്ഷാ പരിഗണനകൾ ഇതാ:
- ഡാറ്റാ സാധൂകരണം: ഇൻജക്ഷൻ ആക്രമണങ്ങളും മറ്റ് സുരക്ഷാ പ്രശ്നങ്ങളും തടയാൻ വരുന്ന എല്ലാ ഡാറ്റയും എപ്പോഴും സാധൂകരിക്കുക. ഡാറ്റയുടെ ഫോർമാറ്റ്, തരം, വലുപ്പം എന്നിവ സാധൂകരിക്കുക, കൂടാതെ ക്ഷുദ്രകരമായേക്കാവുന്ന ഏതെങ്കിലും അക്ഷരങ്ങൾ വൃത്തിയാക്കുക.
- ക്രോസ്-സൈറ്റ് സ്ക്രിപ്റ്റിംഗ് (XSS): UI-ൽ പ്രദർശിപ്പിക്കുന്ന ഉപയോക്താവ് നൽകിയ ഡാറ്റയെ എസ്കേപ്പ് ചെയ്തുകൊണ്ട് XSS ആക്രമണങ്ങളിൽ നിന്ന് സംരക്ഷിക്കുക. HTML എൻ്റിറ്റികളെ സ്വയമേവ എസ്കേപ്പ് ചെയ്യുന്ന ഒരു ടെംപ്ലേറ്റിംഗ് എഞ്ചിൻ ഉപയോഗിക്കുക, അല്ലെങ്കിൽ ഒരു പ്രത്യേക XSS സംരക്ഷണ ലൈബ്രറി ഉപയോഗിക്കുക.
- ക്രോസ്-സൈറ്റ് റിക്വസ്റ്റ് ഫോർജറി (CSRF): ഒരു CSRF ടോക്കൺ ഉപയോഗിച്ച് CSRF ആക്രമണങ്ങളിൽ നിന്ന് സംരക്ഷിക്കുക. ഒരു CSRF ടോക്കൺ നിങ്ങളുടെ സെർവർ സൃഷ്ടിക്കുന്ന അതുല്യവും പ്രവചിക്കാൻ കഴിയാത്തതുമായ ഒരു മൂല്യമാണ്, അത് എല്ലാ ഫോമുകളിലും AJAX അഭ്യർത്ഥനകളിലും ഉൾപ്പെടുത്തുന്നു. ഇത് ആധികാരികത ഉറപ്പുവരുത്തിയ ഉപയോക്താക്കളുടെ പേരിൽ ആക്രമണകാരികൾ അഭ്യർത്ഥനകൾ വ്യാജമായി ഉണ്ടാക്കുന്നത് തടയുന്നു.
- ഫയൽ അപ്ലോഡ് സുരക്ഷ: ക്ഷുദ്രകരമായ ഫയലുകൾ അപ്ലോഡ് ചെയ്യുന്നതിൽ നിന്ന് ഉപയോക്താക്കളെ തടയാൻ ശക്തമായ ഫയൽ അപ്ലോഡ് സുരക്ഷാ നടപടികൾ നടപ്പിലാക്കുക. ഫയൽ തരങ്ങൾ, ഫയൽ വലുപ്പങ്ങൾ, ഫയൽ ഉള്ളടക്കങ്ങൾ എന്നിവ സാധൂകരിക്കുക, കൂടാതെ അപ്ലോഡ് ചെയ്ത ഫയലുകൾ ശരിയായ ആക്സസ് നിയന്ത്രണങ്ങളോടെ സുരക്ഷിതമായ ഒരു സ്ഥലത്ത് സംഭരിക്കുക.
- HTTPS: നിങ്ങളുടെ ആപ്ലിക്കേഷനും സെർവറും തമ്മിലുള്ള എല്ലാ ആശയവിനിമയങ്ങളും എൻക്രിപ്റ്റ് ചെയ്യാൻ എപ്പോഴും HTTPS ഉപയോഗിക്കുക. ഇത് സെൻസിറ്റീവ് ഡാറ്റയിൽ നിന്ന് ആക്രമണകാരികൾ ഒളിഞ്ഞുനോക്കുന്നത് തടയുന്നു.
- കണ്ടൻ്റ് സെക്യൂരിറ്റി പോളിസി (CSP): നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ നിന്ന് ലോഡ് ചെയ്യാൻ കഴിയുന്ന റിസോഴ്സുകളുടെ തരങ്ങൾ നിയന്ത്രിക്കാൻ നിങ്ങളുടെ CSP കോൺഫിഗർ ചെയ്യുക. ആക്രമണകാരികൾക്ക് നിങ്ങളുടെ ആപ്ലിക്കേഷനിലേക്ക് ക്ഷുദ്രകരമായ കോഡ് കുത്തിവയ്ക്കുന്നത് തടഞ്ഞുകൊണ്ട് XSS ആക്രമണങ്ങൾ തടയാൻ ഇത് സഹായിക്കുന്നു.
- സ്ഥിരമായ സുരക്ഷാ ഓഡിറ്റുകൾ: ഏതെങ്കിലും സുരക്ഷാ പ്രശ്നങ്ങൾ കണ്ടെത്താനും പരിഹരിക്കാനും സ്ഥിരമായ സുരക്ഷാ ഓഡിറ്റുകൾ നടത്തുക. ഓട്ടോമേറ്റഡ് സുരക്ഷാ സ്കാനിംഗ് ടൂളുകൾ ഉപയോഗിക്കുക, നിങ്ങളുടെ ആപ്ലിക്കേഷൻ സുരക്ഷിതമാണെന്ന് ഉറപ്പാക്കാൻ സുരക്ഷാ വിദഗ്ദ്ധരുമായി ബന്ധപ്പെടുക.
ഉദാഹരണങ്ങളും ഉപയോഗ രീതികളും
യഥാർത്ഥ ലോക ആപ്ലിക്കേഷനുകളിൽ വെബ് ഷെയർ ടാർഗെറ്റ് API എങ്ങനെ ഉപയോഗിക്കാമെന്നതിൻ്റെ ചില ഉദാഹരണങ്ങൾ ഇതാ:
- സോഷ്യൽ മീഡിയ ആപ്പുകൾ: മറ്റ് ആപ്പുകളിൽ നിന്നുള്ള ഉള്ളടക്കം നിങ്ങളുടെ സോഷ്യൽ മീഡിയ പ്ലാറ്റ്ഫോമിലേക്ക് നേരിട്ട് പങ്കിടാൻ ഉപയോക്താക്കളെ അനുവദിക്കുക. ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവിന് ഒരു വാർത്താ ആപ്പിൽ നിന്ന് നിങ്ങളുടെ സോഷ്യൽ മീഡിയ ആപ്പിലേക്ക് ഒരു മുൻകൂട്ടി തയ്യാറാക്കിയ സന്ദേശത്തോടുകൂടി ഒരു ലിങ്ക് പങ്കിടാൻ കഴിയും.
- നോട്ട്-ടെയ്ക്കിംഗ് ആപ്പുകൾ: മറ്റ് ആപ്പുകളിൽ നിന്നുള്ള ടെക്സ്റ്റ്, URL-കൾ, ഫയലുകൾ എന്നിവ നിങ്ങളുടെ നോട്ട്-ടെയ്ക്കിംഗ് ആപ്പിലേക്ക് നേരിട്ട് പങ്കിടാൻ ഉപയോക്താക്കളെ അനുവദിക്കുക. ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവിന് ഒരു കോഡ് എഡിറ്ററിൽ നിന്ന് നിങ്ങളുടെ നോട്ട്-ടെയ്ക്കിംഗ് ആപ്പിലേക്ക് ഒരു കോഡിൻ്റെ ഭാഗം പങ്കിടാൻ കഴിയും.
- ഇമേജ് എഡിറ്റിംഗ് ആപ്പുകൾ: മറ്റ് ആപ്പുകളിൽ നിന്നുള്ള ചിത്രങ്ങൾ നിങ്ങളുടെ ഇമേജ് എഡിറ്റിംഗ് ആപ്പിലേക്ക് നേരിട്ട് പങ്കിടാൻ ഉപയോക്താക്കളെ അനുവദിക്കുക. ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവിന് ഒരു ഫോട്ടോ ഗാലറി ആപ്പിൽ നിന്ന് നിങ്ങളുടെ ഇമേജ് എഡിറ്റിംഗ് ആപ്പിലേക്ക് ഒരു ഫോട്ടോ പങ്കിടാൻ കഴിയും.
- ഇ-കൊമേഴ്സ് ആപ്പുകൾ: മറ്റ് ആപ്പുകളിൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ നിങ്ങളുടെ ഇ-കൊമേഴ്സ് ആപ്പിലേക്ക് നേരിട്ട് പങ്കിടാൻ ഉപയോക്താക്കളെ അനുവദിക്കുക. ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവിന് ഒരു ഷോപ്പിംഗ് ആപ്പിൽ നിന്ന് നിങ്ങളുടെ ഇ-കൊമേഴ്സ് ആപ്പിലേക്ക് ഉൽപ്പന്നം വില താരതമ്യം ചെയ്യാൻ പങ്കിടാൻ കഴിയും.
- സഹകരണ ടൂളുകൾ: മറ്റ് ആപ്പുകളിൽ നിന്നുള്ള ഡോക്യുമെൻ്റുകളും ഫയലുകളും നിങ്ങളുടെ സഹകരണ ടൂളിലേക്ക് നേരിട്ട് പങ്കിടാൻ ഉപയോക്താക്കളെ അനുവദിക്കുക. ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവിന് ഒരു ഡോക്യുമെൻ്റ് എഡിറ്റർ ആപ്പിൽ നിന്ന് നിങ്ങളുടെ സഹകരണ ടൂളിലേക്ക് അവലോകനത്തിനായി ഒരു ഡോക്യുമെൻ്റ് പങ്കിടാൻ കഴിയും.
അടിസ്ഥാന കാര്യങ്ങൾക്കപ്പുറം: വികസിത സാങ്കേതിക വിദ്യകൾ
നിങ്ങൾക്ക് ഒരു അടിസ്ഥാന ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സർ നിലവിലുണ്ടെങ്കിൽ, അതിൻ്റെ പ്രവർത്തനം മെച്ചപ്പെടുത്തുന്നതിന് ചില വികസിത സാങ്കേതിക വിദ്യകൾ നിങ്ങൾക്ക് പര്യവേക്ഷണം ചെയ്യാവുന്നതാണ്:
- കസ്റ്റം ഷെയർ ഷീറ്റുകൾ: സ്റ്റാൻഡേർഡ് ഷെയർ ഷീറ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റമാണ് നൽകുന്നത്. എന്നിരുന്നാലും, പ്ലാറ്റ്ഫോമിനെയും അതിൻ്റെ പങ്കിടൽ കഴിവുകളെയും ആശ്രയിച്ചിരിക്കുന്നതുകൊണ്ട് കസ്റ്റം ഘടകങ്ങൾ ഉപയോഗിച്ച് ഷെയർ ഷീറ്റ് അനുഭവം സ്വാധീനിക്കാനോ മെച്ചപ്പെടുത്താനോ നിങ്ങൾക്ക് കഴിയും. പ്ലാറ്റ്ഫോം പരിമിതികൾ ഇഷ്ടാനുസൃതമാക്കലിൻ്റെ അളവിനെ നിയന്ത്രിച്ചേക്കാം എന്നത് ശ്രദ്ധിക്കുക.
- പ്രോഗ്രസ്സീവ് എൻഹാൻസ്മെൻ്റ്: ഷെയർ ടാർഗെറ്റ് പ്രവർത്തനം ഒരു പ്രോഗ്രസ്സീവ് എൻഹാൻസ്മെൻ്റായി നടപ്പിലാക്കുക. വെബ് ഷെയർ ടാർഗെറ്റ് API ബ്രൗസറിൽ പിന്തുണയ്ക്കുന്നില്ലെങ്കിൽ, ഷെയർ ടാർഗെറ്റ് ഫീച്ചർ ഇല്ലാതെയാണെങ്കിലും നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ശരിയായി പ്രവർത്തിക്കണം.
- ഡെഫേർഡ് പ്രോസസ്സിംഗ്: സങ്കീർണ്ണമായ പ്രോസസ്സിംഗ് ജോലികൾക്കായി, പ്രോസസ്സിംഗ് ഒരു ബാക്ക്ഗ്രൗണ്ട് ടാസ്കിലേക്ക് മാറ്റുന്നത് പരിഗണിക്കുക. ഇത് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ്റെ പ്രതികരണശേഷി മെച്ചപ്പെടുത്താനും UI ഫ്രീസ് ആകുന്നത് തടയാനും കഴിയും. ഈ ജോലികൾ കൈകാര്യം ചെയ്യാൻ നിങ്ങൾക്ക് ഒരു ബാക്ക്ഗ്രൗണ്ട് ക്യൂവോ അല്ലെങ്കിൽ ഒരു പ്രത്യേക ബാക്ക്ഗ്രൗണ്ട് പ്രോസസ്സിംഗ് ലൈബ്രറിയോ ഉപയോഗിക്കാം.
- അനലിറ്റിക്സും നിരീക്ഷണവും: ഉപയോക്താക്കൾ നിങ്ങളുടെ ആപ്ലിക്കേഷനിലേക്ക് എങ്ങനെ ഉള്ളടക്കം പങ്കിടുന്നു എന്നതിനെക്കുറിച്ചുള്ള ഉൾക്കാഴ്ചകൾ നേടുന്നതിന് നിങ്ങളുടെ ഷെയർ ടാർഗെറ്റ് പ്രവർത്തനത്തിൻ്റെ ഉപയോഗം നിരീക്ഷിക്കുക. ഇത് മെച്ചപ്പെടുത്താനുള്ള മേഖലകൾ തിരിച്ചറിയാനും ഷെയർ ടാർഗെറ്റ് അനുഭവം ഒപ്റ്റിമൈസ് ചെയ്യാനും നിങ്ങളെ സഹായിക്കും.
ക്രോസ്-പ്ലാറ്റ്ഫോം പരിഗണനകൾ
വെബ് ഷെയർ ടാർഗെറ്റ് API ക്രോസ്-പ്ലാറ്റ്ഫോമായി രൂപകൽപ്പന ചെയ്തിട്ടുള്ളതാണ്, എന്നാൽ ചില പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട പരിഗണനകൾ ശ്രദ്ധയിൽ സൂക്ഷിക്കേണ്ടതുണ്ട്:
- Android: Android-ൽ, ഷെയർ ഷീറ്റ് വളരെ ഇഷ്ടാനുസൃതമാക്കാവുന്നതാണ്, ഉപയോക്താവിൻ്റെ മുൻഗണനകളെ ആശ്രയിച്ച് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഷെയർ ഷീറ്റിൽ വ്യത്യസ്ത സ്ഥാനങ്ങളിൽ പ്രത്യക്ഷപ്പെടാം.
- iOS: iOS-ൽ, ഷെയർ ഷീറ്റ് അത്ര ഇഷ്ടാനുസൃതമാക്കാവുന്നതല്ല, കൂടാതെ ഉപയോക്താവ് അടുത്തിടെ ഉപയോഗിച്ചിട്ടില്ലെങ്കിൽ നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഷെയർ ഷീറ്റിൽ എപ്പോഴും ദൃശ്യമാകണമെന്നില്ല.
- ഡെസ്ക്ടോപ്പ്: ഡെസ്ക്ടോപ്പ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിൽ, ഷെയർ ഷീറ്റ് വ്യത്യസ്തമായിരിക്കാം അല്ലെങ്കിൽ ലഭ്യമായിരിക്കില്ല.
നിങ്ങളുടെ ഷെയർ ടാർഗെറ്റ് പ്രവർത്തനം ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടെന്നും സ്ഥിരമായ ഉപയോക്തൃ അനുഭവം നൽകുന്നുണ്ടെന്നും ഉറപ്പാക്കാൻ വ്യത്യസ്ത പ്ലാറ്റ്ഫോമുകളിൽ പരീക്ഷിക്കുക.
ഉപസംഹാരം
വെബ് ഷെയർ ടാർഗെറ്റ് API-യുടെ ശക്തി പ്രയോജനപ്പെടുത്തുന്നതിന് ശക്തവും സുരക്ഷിതവുമായ ഒരു ഫ്രണ്ടെൻഡ് ഷെയർ ടാർഗെറ്റ് പ്രൊസസ്സർ നിർമ്മിക്കേണ്ടത് അത്യാവശ്യമാണ്. ഈ ഗൈഡിൽ വിവരിച്ചിരിക്കുന്ന മികച്ച രീതികൾ പിന്തുടർന്ന്, നിങ്ങളുടെ വെബ് ആപ്ലിക്കേഷനിലേക്ക് ഉള്ളടക്കം പങ്കിടുന്നതിന് തടസ്സമില്ലാത്തതും ആകർഷകവുമായ ഉപയോക്തൃ അനുഭവം നിങ്ങൾക്ക് സൃഷ്ടിക്കാൻ കഴിയും. സുരക്ഷയ്ക്ക് മുൻഗണന നൽകാനും, വരുന്ന എല്ലാ ഡാറ്റയും സാധൂകരിക്കാനും, ഉപയോക്താവിന് വ്യക്തമായ ഫീഡ്ബാക്ക് നൽകാനും ഓർമ്മിക്കുക. വെബ് ഷെയർ ടാർഗെറ്റ് API, ശരിയായി നടപ്പിലാക്കുമ്പോൾ, ഉപയോക്താവിൻ്റെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റവുമായി നിങ്ങളുടെ PWA-യുടെ സംയോജനം ഗണ്യമായി മെച്ചപ്പെടുത്താനും മൊത്തത്തിലുള്ള ഉപയോഗക്ഷമത വർദ്ധിപ്പിക്കാനും കഴിയും.